package bomberman.modelo.observadores;

import java.io.IOException;

import bomberman.modelo.Partida;
import bomberman.modelo.personajes.Cecilio;
import bomberman.vista.Dimensionador;
import bomberman.vista.personajes.VistaCecilioEste;
import bomberman.vista.personajes.VistaCecilioNorte;
import bomberman.vista.personajes.VistaCecilioOeste;
import bomberman.vista.personajes.VistaCecilioSur;

public class ObservadorCecilio implements IObservador {
  
  private Partida partida;
  
  public ObservadorCecilio(Partida partida) {
    this.partida = partida;
  }
  
  @Override
  public void actualizar(Object arg) {
    try {
      if (!(this.partida.getGameLoop().getObjetosVivos().contains(arg))) {
        this.partida.agregarObjetoVivoYVista(arg, new VistaCecilioSur(new Dimensionador((Cecilio) arg)));
      } else {
        if (((Cecilio) arg).getResistencia() == 0) {
          this.partida.retirarObjetoVivoYVista(arg);
        } else {
          switch (((Cecilio) arg).getDireccion()) {
            case NORTE:
              this.partida.cambiarVista(arg, new VistaCecilioNorte(new Dimensionador((Cecilio) arg)));
            break;
            case SUR:
              this.partida.cambiarVista(arg, new VistaCecilioSur(new Dimensionador((Cecilio) arg)));
            break;
            case OESTE:
              this.partida.cambiarVista(arg, new VistaCecilioOeste(new Dimensionador((Cecilio) arg)));
            break;
            case ESTE:
              this.partida.cambiarVista(arg, new VistaCecilioEste(new Dimensionador((Cecilio) arg)));
            break;
          }
        }
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}
